2 channel setup working

James Peret 7 years ago
parent
commit
c2cf8b4ad6

+ 1 - 1
public/scripts/app.js

@@ -26,7 +26,7 @@ angular
26 26
         controller: 'MainCtrl',
27 27
         controllerAs: 'main'
28 28
       })
29
-      .when('/about', {
29
+      .when('/player', {
30 30
         templateUrl: 'public/scripts/views/player.html',
31 31
         controller: 'PlayerCtrl',
32 32
         controllerAs: 'player'

+ 14 - 5
public/scripts/controllers/main.js

@@ -10,7 +10,7 @@
10 10
 angular.module('infernoQuadrifonicoApp')
11 11
   .controller('MainCtrl', function ($http, $scope, $interval, $localStorage) {
12 12
 
13
-    var useLocalStorage = false;
13
+    var useLocalStorage = true;
14 14
     var socket = io("", { query: "type=controller"});
15 15
     $scope.playing = [];
16 16
 
@@ -49,7 +49,7 @@ angular.module('infernoQuadrifonicoApp')
49 49
           $localStorage.roteiro = angular.copy($scope.roteiro);
50 50
           console.log("Autosaving...")
51 51
           //console.log($localStorage);
52
-        }, 15000);
52
+        }, 60000);
53 53
         //$interval.cancel(interval);
54 54
     });
55 55
 
@@ -113,9 +113,14 @@ angular.module('infernoQuadrifonicoApp')
113 113
 
114 114
             $scope.roteiro[i].arquivos[c].playing = true;
115 115
             var d = $scope.roteiro[i].arquivos[c].duration;
116
-            var s = $scope.roteiro[i].arquivos[c].seek;
116
+            var s1 = $scope.roteiro[i].arquivos[c].channels[0].seek;
117
+            var s2 = $scope.roteiro[i].arquivos[c].channels[1].seek;
118
+            var volume1 = $scope.roteiro[i].arquivos[c].channels[0].volume
119
+            var volume2 = $scope.roteiro[i].arquivos[c].channels[1].volume
120
+            var pan1 = $scope.roteiro[i].arquivos[c].channels[0].pan
121
+            var pan2 = $scope.roteiro[i].arquivos[c].channels[1].pan
117 122
             $scope.roteiro[i].arquivos[c].channels[0].seek;
118
-            console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | " + Math.floor((d * s)/100));
123
+            console.log('Playing: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " ("+ volume1 + "/" + volume2 + " | " + pan1 + "/" + pan2 + ")");
119 124
             sendPlayCommand($scope.roteiro[i].arquivos[c]);
120 125
           }
121 126
         }
@@ -131,7 +136,7 @@ angular.module('infernoQuadrifonicoApp')
131 136
             $scope.roteiro[i].arquivos[c].playing = false;
132 137
             //$scope.roteiro[i].arquivos[c].seek = 0;
133 138
             sendStopCommand($scope.roteiro[i].arquivos[c])
134
-            console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | " + $scope.roteiro[i].arquivos[c].playing);
139
+            console.log('Finished: ' + $scope.roteiro[i].arquivos[c].url + " | " + $scope.roteiro[i].arquivos[c].playing);
135 140
           }
136 141
         }
137 142
       }
@@ -267,6 +272,8 @@ angular.module('infernoQuadrifonicoApp')
267 272
             }
268 273
             delete arquivo.channels[0].pan;
269 274
             delete arquivo.channels[0].seek;
275
+            delete arquivo.channels[1].pan;
276
+            delete arquivo.channels[1].seek;
270 277
             socket.emit('update playback', arquivo);
271 278
           }
272 279
         }
@@ -284,6 +291,8 @@ angular.module('infernoQuadrifonicoApp')
284 291
             }
285 292
             delete arquivo.channels[0].volume;
286 293
             delete arquivo.channels[0].seek;
294
+            delete arquivo.channels[1].volume;
295
+            delete arquivo.channels[1].seek;
287 296
             socket.emit('update playback', arquivo);
288 297
           }
289 298
         }

+ 42 - 24
public/scripts/controllers/player.js

@@ -10,6 +10,20 @@
10 10
 angular.module('infernoQuadrifonicoApp')
11 11
   .controller('PlayerCtrl', function ($http, $scope, $interval, $localStorage) {
12 12
 
13
+    var channel = 0;
14
+    $scope.current_channel = 1;
15
+
16
+    $scope.changeChannel = function() {
17
+      if(channel == 0){
18
+        channel = 1;
19
+        $scope.current_channel = 2;
20
+      } else {
21
+        channel = 0;
22
+        $scope.current_channel = 1;
23
+      }
24
+      console.log("changing to channel " + channel);
25
+    }
26
+
13 27
     var socket = io();
14 28
     socket.on('play', function(arquivo){
15 29
       console.log("Playing file: " + arquivo.url)
@@ -52,14 +66,14 @@ angular.module('infernoQuadrifonicoApp')
52 66
               src: [$scope.roteiro[i].arquivos[c].url],
53 67
               autoplay: false,
54 68
               loop: $scope.roteiro[i].arquivos[c].loop,
55
-              volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100),
56
-              stereo: $scope.roteiro[i].arquivos[c].channels[0].pan,
69
+              volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100),
70
+              stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan,
57 71
               onend: function(id) {
58 72
                 for (var i = 0; i < $scope.roteiro.length; i++) {
59 73
                   for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
60 74
                     if($scope.roteiro[i].arquivos[c].id == id){
61 75
                       $scope.roteiro[i].arquivos[c].playing = false;
62
-                      $scope.roteiro[i].arquivos[c].channels[0].seek = 0;
76
+                      $scope.roteiro[i].arquivos[c].channels[channel].seek = 0;
63 77
                       console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
64 78
                       $scope.$apply();
65 79
                       delete $scope.roteiro[i].arquivos[c].sound;
@@ -79,13 +93,17 @@ angular.module('infernoQuadrifonicoApp')
79 93
       for (var i = 0; i < $scope.roteiro.length; i++) {
80 94
         for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
81 95
           if($scope.roteiro[i].arquivos[c].url == arquivo.url){
82
-            $scope.roteiro[i].arquivos[c].volume = parseInt(arquivo.channels[0].volume);
83
-            $scope.roteiro[i].arquivos[c].pan = parseInt(arquivo.channels[0].pan);
84
-            $scope.roteiro[i].arquivos[c].seek = parseInt(arquivo.channels[0].seek);
96
+            //$scope.roteiro[i].arquivos[c].volume = arquivo.channels[channel].volume;
97
+            //$scope.roteiro[i].arquivos[c].pan = arquivo.channels[channel].pan;
98
+            //$scope.roteiro[i].arquivos[c].seek = arquivo.channels[channel].seek;
99
+            $scope.roteiro[i].arquivos[c].channels = arquivo.channels;
85 100
             console.log($scope.roteiro[i].arquivos[c])
101
+            var channels = $scope.roteiro[i].arquivos[c].channels;
102
+            console.log("received: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[0].volume + "/" + channels[1].volume + " | " + channels[0].pan + "/" + channels[1].pan + ")")
103
+            console.log("playing: " + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop() + " (" + channels[channel].volume + " | " + channels[channel].pan + ")")
86 104
             if($scope.roteiro[i].arquivos[c].sound) {
87
-              $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100);
88
-              $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100);
105
+              $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100);
106
+              $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100);
89 107
               $scope.roteiro[i].arquivos[c].sound.stop();
90 108
               $scope.roteiro[i].arquivos[c].sound.play();
91 109
             } else {
@@ -95,15 +113,15 @@ angular.module('infernoQuadrifonicoApp')
95 113
                 src: [$scope.roteiro[i].arquivos[c].url],
96 114
                 autoplay: false,
97 115
                 loop: $scope.roteiro[i].arquivos[c].loop,
98
-                volume: ($scope.roteiro[i].arquivos[c].channels[0].volume/100),
99
-                stereo: $scope.roteiro[i].arquivos[c].channels[0].pan,
116
+                volume: ($scope.roteiro[i].arquivos[c].channels[channel].volume/100),
117
+                stereo: $scope.roteiro[i].arquivos[c].channels[channel].pan,
100 118
                 onend: function(id) {
101 119
                   for (var i = 0; i < $scope.roteiro.length; i++) {
102 120
                     for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
103 121
                       if($scope.roteiro[i].arquivos[c].id == id){
104 122
                         $scope.roteiro[i].arquivos[c].playing = false;
105 123
                         $scope.roteiro[i].arquivos[c].seek = 0;
106
-                        console.log('Finished: ' + id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
124
+                        console.log('finished: ' + $scope.roteiro[i].arquivos[c].url.split("public/audio/").pop());
107 125
                         $scope.$apply();
108 126
                         delete $scope.roteiro[i].arquivos[c].sound;
109 127
                         socket.emit('play ended', $scope.roteiro[i].arquivos[c]);
@@ -119,9 +137,9 @@ angular.module('infernoQuadrifonicoApp')
119 137
             $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].pan);
120 138
             $scope.roteiro[i].arquivos[c].playing = true;
121 139
             var d = $scope.roteiro[i].arquivos[c].sound.duration();
122
-            var s = $scope.roteiro[i].arquivos[c].channels[0].seek;
140
+            var s = $scope.roteiro[i].arquivos[c].channels[channel].seek;
123 141
             $scope.roteiro[i].arquivos[c].sound.seek((d * s)/100)
124
-            console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[0].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[0].volume);
142
+            //console.log('Playing: ' + $scope.roteiro[i].arquivos[c].id + " | pan: " + $scope.roteiro[i].arquivos[c].channels[channel].pan + " | volume: " + $scope.roteiro[i].arquivos[c].channels[channel].volume);
125 143
           }
126 144
         }
127 145
       }
@@ -134,7 +152,7 @@ angular.module('infernoQuadrifonicoApp')
134 152
             $scope.roteiro[i].arquivos[c].sound.stop();
135 153
             delete $scope.roteiro[i].arquivos[c].sound;
136 154
             $scope.roteiro[i].arquivos[c].playing = false;
137
-            $scope.roteiro[i].arquivos[c].channels[0].seek = 0;
155
+            $scope.roteiro[i].arquivos[c].channels[channel].seek = 0;
138 156
             console.log('Finished: ' + $scope.roteiro[i].arquivos[c].id + " | playing: " + $scope.roteiro[i].arquivos[c].playing);
139 157
           }
140 158
         }
@@ -145,23 +163,23 @@ angular.module('infernoQuadrifonicoApp')
145 163
       for (var i = 0; i < $scope.roteiro.length; i++) {
146 164
         for (var c = 0; c < $scope.roteiro[i].arquivos.length; c++) {
147 165
           if($scope.roteiro[i].arquivos[c].url == arquivo.url){
148
-            if(arquivo.channels[0].seek){
149
-              $scope.roteiro[i].arquivos[c].channels[0].seek = arquivo.channels[0].seek;
166
+            if(arquivo.channels[channel].seek){
167
+              $scope.roteiro[i].arquivos[c].channels[channel].seek = arquivo.channels[channel].seek;
150 168
               var d = $scope.roteiro[i].arquivos[c].sound.duration();
151
-              var s = $scope.roteiro[i].arquivos[c].channels[0].seek;
169
+              var s = $scope.roteiro[i].arquivos[c].channels[channel].seek;
152 170
               var v = $scope.roteiro[i].arquivos[c].sound.seek();
153 171
               $scope.roteiro[i].arquivos[c].sound.seek(s)
154 172
               console.log("seek: " + s);
155 173
             }
156
-            if(arquivo.channels[0].volume){
157
-              $scope.roteiro[i].arquivos[c].channels[0].volume = arquivo.channels[0].volume;
158
-              $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[0].volume/100);
159
-              console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[0].volume);
174
+            if(arquivo.channels[channel].volume){
175
+              $scope.roteiro[i].arquivos[c].channels[channel].volume = arquivo.channels[channel].volume;
176
+              $scope.roteiro[i].arquivos[c].sound.volume($scope.roteiro[i].arquivos[c].channels[channel].volume/100);
177
+              console.log("volume: " + $scope.roteiro[i].arquivos[c].sound.volume() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].volume);
160 178
             }
161 179
             if(arquivo.channels[0].pan){
162
-              $scope.roteiro[i].arquivos[c].channels[0].pan = arquivo.channels[0].pan;
163
-              $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[0].pan/100);
164
-              console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[0].pan);
180
+              $scope.roteiro[i].arquivos[c].channels[channel].pan = arquivo.channels[channel].pan;
181
+              $scope.roteiro[i].arquivos[c].sound.stereo($scope.roteiro[i].arquivos[c].channels[channel].pan/100);
182
+              console.log("pan: " + $scope.roteiro[i].arquivos[c].sound.stereo() + " | " + $scope.roteiro[i].arquivos[c].channels[channel].pan);
165 183
             }
166 184
             break;
167 185
           }

+ 1 - 0
public/scripts/views/player.html

@@ -1,3 +1,4 @@
1 1
 <div style="margin-top: 150px; margin-left: auto; margin-right: auto; width: 400px; text-align: center;">
2 2
   <h2>Network Audio Player</h2>
3
+  <a ng-click="changeChannel()">Channel {{current_channel}}</a>
3 4
 </div>

+ 1 - 1
server.js

@@ -26,7 +26,7 @@ io.on('connection', function(socket){
26 26
 
27 27
   socket.on('play', function(file){
28 28
     io.emit('play', file);
29
-    console.log('playing file: ' + file.url + " | volume: " + file.channels[0].volume + " | pan: " + file.channels[0].pan );
29
+    console.log('playing: ' + file.url.split("public/audio/").pop() + " (" + file.channels[0].volume + "/" + file.channels[1].volume + " | " + file.channels[0].pan + "/" + file.channels[1].pan + ")" );
30 30
   });
31 31
 
32 32
   socket.on('stop', function(file){